<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    let arr = [1,2,3,44]
    // let a = arr.reduce(function (a,b,c,d) {
    //   return a+b  
    //  // 逻辑自己考虑，可以累加，也可以累积或者操作dom
    // },e)
    let a = arr.reduce(function (a,b) {
      console.log(`a:${a},b:${b}`);
      
      return a+b 
    },0)
    // reduce() 累加器

    // 必选参数    👇
    //a 代表返回的值 无e则为第0项  有e则代表e
    // 逻辑是累加 那意味着每次遍历  a 都等于上一次的a+b的值 继续跟当前项进行运算并赋值给下一次的a
    //b 代表当前项 

    // 非必选参数    👇
    //c 代表第一个进行累加元素的索引 非必选 如果提供了e，则起始索引号为0，否则从索引1起始。
    //d 当前元素所属的数组对象
    //e 作为第一次调用 callback函数时的第一个参数的值。 
    //如果没有提供初始值，则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。
    console.log(a);  // 求和  50  求积  264
  </script>
</body>
</html>